Fail-Over In A Multi-Computer System

ABSTRACT

System and method for managing data fail-over for a computing system comprising a plurality of computers, e.g., computer blades, coupled through a network. A fail-over condition may indicate a component failure, an imminent failure, and/or a need to modify or replace some aspect of a computer. Computers in the system may back up their information to other computers in the system. If a fail-over condition is detected on a first computer, a replacement computer may be loaded with the information from the first computer, optionally from a backup copy stored on another computer (or distributed across multiple computers), and the first computer&#39;s peripheral devices (human interface) switched over to the replacement computer. The method may be used to replace a single computer, swap two computers, and/or perform a cascade move among multiple computers, and may be performed automatically in response to the fail-over condition, or initiated by a system administrator.

PRIORITY CLAIM

This application is a continuation of U.S. patent application Ser. No.10/301,536 titled “Data Fail-Over For A Multi-Computer System” and filedon Nov. 21, 2002, whose inventors were Syed Mohammad Amir Husain, ToddJohn Enright and Barry W. Thornton, which claims benefit of priority ofU.S. provisional application Ser. No. 60/332,143 titled “A Fail ForwardNetworked Storage System,” filed Nov. 21, 2001, whose inventor was BarryThornton and which also claims benefit of priority of U.S. provisionalapplication Ser. No. 60/411,066 titled “Distributed ComputingInfrastructure” filed on Sep. 16, 2002, whose inventors were AmirHusain, Todd Enright, and Barry Thornton.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to managing information storagebetween two or more computers and specifically to remedying computerfail-over conditions.

2. Description of the Related Art

Many commercial businesses and enterprises make extensive use ofpersonal computers (PCs) in their daily operations. Typically, each userof a PC in the enterprise has a networked PC at his/her desk or workarea. As the number of networked computer systems utilized in anenterprise increases, the management of resources in the network maybecome increasingly complex and expensive. Some of the manageabilityissues involved in maintaining a large number of networked computersystems may include ease of installation and deployment, the topologyand physical logistics of the network, asset management, scalability(the cost and effort involved in increasing the number of units),troubleshooting network or unit problems, support costs, softwaretracking and management, as well as the simple issue of physical space,be it floor space or room on the desktop, as well as security issuesregarding physical assets, information protection, software control, andcomputer virus issues.

Many of these issues may be addressed by centralizing the locations ofthe PCs, such as by installing multiple PCs into a central frame orcabinet, and locating each PC's human interface (e.g., keyboard,monitor, mouse, etc.) at a respective remote location, e.g., more than10 or 20 feet from the computing system. In one approach, each computerin the system may be a “computer on a card”, also referred to as acomputer blade or “blade”. In other words, the computing system may becomprised on a circuit card which may include standard computing systemcomponents such as a CPU, memory, power supply, and network interface,as well as an extender, e.g., a PCI extender, for communicating with theremote human interface. In a typical networked computer system, the harddrive is often one of the least reliable components. Due to the constantuse of the hard drive, and the reliance of the user on the informationand application programs stored on the hard drive, a failure of the harddrive may have catastrophic effects. Additionally, when the number ofcomputers and respective hard drives in the networked system becomesvery large, the occurrence of a hard drive failure becomes increasinglyprobable, i.e., the mean time between failures decreases as the numberof drives in the system increases.

Information redundancy is generally used to prevent irretrievable lossof information in the event of a hard drive or computer failure. Forexample, a variety of approaches may be based on the Redundant Array ofInexpensive Disks (RAID), where information on one disk drive arereplicated on other disk drives so that in the event of a failure theinformation of the original drive may be rebuilt or restored from theother disk drives. However, these systems typically rely on centralstorage management, such as a dedicated server computer that monitorsand controls the storage, backup, and retrieval process among thenetworked computers. Thus, there are particular points of failure thatmay lead to catastrophic losses of information or functionality in thesystem. In many cases, there may even be a single point of failure, suchas the managing server, whose failure may jeopardize the entire system.

Thus, improved systems and methods for managing information storagebetween a plurality of computers are desired.

SUMMARY OF THE INVENTION

Various embodiments of a system and method for managing data storage fora plurality of computer systems are presented. In one embodiment, thecomputer systems may be configured to restore or replace a failedcomputer system. The computer systems may include a first computer,having a first processor and a first storage medium coupled to the firstprocessor, and a peripheral device, e.g., a keyboard, monitor, mouse, orother type of peripheral device. The computer systems may furtherinclude a second computer having a second processor and a second storagemedium coupled to the second processor. in one embodiment, the firstcomputer and the second computer may each be configured on a respectivecomputer blade, also referred to as a “computer on a card.” Acommunication link, e.g., a bus, may couple the first computer to thesecond computer. A peripheral switch may be coupled to the firstcomputer, the second computer, and the peripheral device. The peripheralswitch may be configured to route signals between the peripheral deviceand the first computer.

In one embodiment, a fail-over condition may be detected on the firstcomputer, e.g., related to the first processor, the first storagemedium, or other component of the first computer. Note that as usedherein, the term “fail-over condition” may refer to an impending failureof a component, to the component failure itself, or to a condition of acomputer that requires attention. A computer that indicates a fail-overcondition may be referred to as a “failed” computer, even if an actualcomponent failure has not occurred. Thus, detection of a fail-overcondition may occur before an actual failure, or may occur during orafter the failure (detection of the fail-over condition). For example, afail-over condition may indicate failure of a processor, impendingfailure of a processor, or even that the performance, e.g., theprocessing capability, of the computer needs to be upgraded or modified.Once the fail-over condition has been detected, then various actions maybe taken to restore, replace, or improve, functionality of the failedcomputer, e.g., by switching the user (i.e., the user's interface) to areplacement computer, where the replacement computer has a copy of atleast a portion of the contents of the first computer's storage medium,i.e., the first computer's information (which may include programs). Invarious embodiments, the information may be copied to the replacementcomputer prior to, during, and/or after, the detection of the fail-overcondition. Additionally, in different embodiments, the information maybe copied directly from the first computer to the replacement computer,or may be copied from the first computer to one or more other computers,then copied from the one or more other computers to the replacementcomputer. In one embodiment, the information may be copied to localcomputers and/or remote computers. If a local backup is available whenthe first computer has a fail-over condition, the local backup may beaccessed faster than a remote backup. If the local backup is notavailable, the remote backup may be accessed. Finally, in variousembodiments, program instructions that implement the detection, copying,and switching may be stored and executed on various of the computers.

For example, in one embodiment, the first storage medium and/or thesecond storage medium may store program instructions executable by thefirst processor and/or the second processor to detect a fail-overcondition of the first computer and copy information from the firststorage medium onto the second storage medium. In another embodiment,the information from the first storage medium may be copied onto a thirdcomputer having a third processor and a third storage medium. As notedabove, the information may be copied from the first storage medium priorto or after detection of the fail-over condition. Note that in theseexamples, the second computer is considered to be the replacementcomputer.

For example, in one embodiment, the first computer may detect afail-over condition related to one or more of its components, e.g., thefirst storage medium, where the fail-over condition may indicate that afailure is forthcoming or imminent (i.e., but has not yet occurred). Thefirst computer may then copy the information to the second computer andswitch the interface, i.e., the peripheral device, over to the secondcomputer. In an embodiment in which the information of the firstcomputer has already been backed-up (prior to the fail-over condition)to the second computer, the first computer may simply switch theperipheral device over to the second computer. In an embodiment in whichthe information of the first computer has been backed-up (prior to thefail-over condition) to one or more other computers, e.g., the thirdcomputer, the first computer may copy the information from the one ormore other computers to the second computer, then switch the peripheraldevice over to the second computer. In other words, if the informationhas not already been reconstructed on the storage medium of the secondcomputer, then the first computer may do so before switching over. Ofcourse, in other embodiments, the above operations may be carried out byprogram instructions executing on the second computer, or alternatively,on the third computer.

Thus, once the information from the first storage medium is on (has beencopied to) the second storage medium the information may be accessibleby the second processor by accessing the second storage medium. In oneembodiment, the second storage medium may store program instructionsexecutable by the second processor to configure the peripheral switch toroute signals between the peripheral device and the second computer sothat the second processor and the second storage medium may be accessedby the peripheral device. Of course, in other embodiments, the programinstructions for switching the peripheral device may be stored andexecuted by others of the computers, e.g., by the third computer.

In one embodiment, the information originating from the first storagemedium may be copied in a snapshot method in which all of theinformation to be copied is bulk copied at specified refresh times,where refresh times may indicate particular times to refresh (e.g.,every hour on the hour, once per day at 3:00 a.m., etc.), or mayindicate intervals between successive refreshes. For example, in oneembodiment, a refresh time may be an hour such that the information isbulk copied from the first storage medium onto the second and/or thirdstorage medium once per hour.

In one embodiment, a replication factor may be set to determine how manycomputers the first computer will backup to. The first computer maydetect the identities of other computers in the system and be assignedto one or more of them depending on the replication factor. Othermethods of assignment may also be within the scope of the invention. Inaddition, a graphical user interface may be provided to assist anadministrator in setting factors such as, but not limited to, thereplication factor.

In another embodiment, a delta-based method may be used to copy theinformation from the first storage medium, where only a differencebetween a previous copy of the information copied to the second and/orthird storage medium and the current information on the first storagemedium is added to the second and/or third storage medium. The firstcomputer may keep track of the incremental backups in a catalog. Thecatalog may then be used by a computer that the first computer isbacking up to in order to request missed incremental backups from thefirst computer.

In one embodiment, each computer may have some file serverfunctionality. The file server functionality may include some I/Ofunctionality, and may also include functionality for negotiating filewrite and read protocols. Communicating with the storage medium on thecomputer may be analogous to communicating with a standard file serverattached memory. The computer may negotiate information writes similarto a file server, and order and prioritize transactions. In oneembodiment, the computer may also implement striping analogous to thatused by RAID (Redundant Array of Inexpensive Disks).

In one embodiment, a fail-over condition may include an indication of aneed to switch the first computer, e.g., to improve performance for auser, or change environments (e.g., from Microsoft Windows to AppleMacOS). For example, if the second computer is a higher performingcomputer, and the user of the first computer needs more computationalpower than the user of the second computer, the computers assigned toeach user may be swapped. In other words, the first computer (or anothercomputer) may copy the information from the first computer over to thesecond computer, and the second computer (or another computer) may copythe information from the second computer onto the first computer.Similarly, a peripheral switch may swap the human interfaces for therespective computers, e.g., by routing signals from a first peripheraldevice (originally routed to the first computer) to the second computer,and from a second peripheral device (originally routed to the secondcomputer) to the first computer.

In another embodiment, a cascade move may be performed. For example, ifa new powerful computer is added to the network, multiple users may beupgraded to computers more powerful than their currently assignedmachines, e.g., based on computation needs, seniority, etc., where, forexample, user A gets moved to the new computer, user B gets moved touser A's old computer, user C gets moved to user B's old computer, andso on. Thus, in this approach, the information from the first computer(user B's old computer) may be copied to the second computer (user A'sold computer) while the information from the second computer (user A'sold computer) is copied onto a third computer (the new computer). Aperipheral switch may switch the first peripheral (i.e., user B's humaninterface) over to the second computer and may switch the secondperipheral (i.e., user A's human interface) over to the third computer.Other switches may also be within the scope of the invention. Forexample, in one embodiment, a single peripheral switch may provideswitching for all of the human interfaces. Alternatively, there may be aperipheral switch per computer or human interface. In yet anotherembodiment, the system may include a peripheral switch for each of anumber of subsets of the computers/human interfaces.

In one embodiment, the storage mediums on the computers may share memoryspace using a virtual network storage space (VNAS) system incorporatinga decentralized peer-to-peer sharing process. For example, theinformation from the first computer may be stored on the storage mediumsof the second and third computers (and/or others of the plurality ofcomputers). If the first computer indicates a fail-over condition, aperipheral switch may switch a peripheral device from the first computerover to the second computer. The second computer may access theinformation for the first computer from the second storage medium andthe third storage medium. In other words, the information may bedistributed over the second and third computers, but may be accessibleas if stored on a single (virtual) storage medium. In one embodiment,the information on the second computer and the third computer may beorganized (e.g., copied) onto either the second computer or the thirdcomputer to have the information from the first computer collected ontoone computer. The peripheral switch may then switch the peripheraldevice from the first computer over to the computer with the organizedcopy.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention may be obtained when thefollowing detailed description of the preferred embodiment is consideredin conjunction with the following drawings, in which:

FIG. 1 illustrates computer systems including peripheral devices coupledto computer blades in a cage, according to one embodiment;

FIG. 2 illustrates a computer blade pulled out of the cage, according toone embodiment;

FIG. 3 illustrates a computer blade having a power supply, hard drive,and motherboard, according to one embodiment;

FIGS. 4 a, 4 b, 4 c, and 4 d illustrate computer blade storage patterns,according to one embodiment;

FIG. 5 illustrates a failed computer blade restored onto a backupcomputer blade, according to one embodiment;

FIG. 6 illustrates an embodiment of a flowchart for restoring a failedcomputer by copying after a failure is detected;

FIG. 7 illustrates an embodiment of a flowchart for restoring a failedcomputer by copying before a failure is detected;

FIG. 8 illustrates an embodiment of a flowchart for restoring a failedcomputer by copying from a third storage medium;

FIG. 9 illustrates a login screen of a management console, according toan embodiment;

FIG. 10 illustrates a main screen in a web-based management interface,according to an embodiment;

FIG. 11 illustrates a configuration screen, according to an embodiment;

FIG. 12 illustrates a screen for a scheduling interface, according to anembodiment;

FIG. 13 illustrates an information recovery view, according to anembodiment;

FIG. 14 illustrates an archive view screen, according to an embodiment;

FIG. 15 illustrates a memory stack on a computer blade storinginformation from other computer blades, according to one embodiment;

FIG. 16 illustrates a memory stack for a computer blade separated by aPC region and a Server region, according to one embodiment;

FIG. 17 illustrates an enterprise switch and a storage network switchcontrolling attached PCs, according to one embodiment;

FIG. 18 illustrates a one-to-one move, according to two embodiments;

FIG. 19 illustrates a cascading move, according to one embodiment;

FIG. 20 illustrates a swap move, according to one embodiment; and

FIG. 21 flowcharts an initiation and process of a move, according to oneembodiment.

While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and are herein described in detail. It should beunderstood, however, that the drawings and detailed description theretoare not intended to limit the invention to the particular formdisclosed, but on the contrary, the intention is to cover allmodifications, equivalents and alternatives falling within the spiritand scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Incorporation byReference

U.S. Provisional Patent 60/144,809 titled “A Technique To Extend TheOperating Distance Of A Universal Serial Bus” is hereby incorporated byreference in its entirety as though fully and completely set forthherein.

U.S. Pat. No. 6,119,146 titled “Computer Network Having MultipleRemotely Located Human Interfaces Sharing A Common Computing System”,which was filed May 4, 1998, whose inventors are Barry Thornton, AndrewHeller, Daniel Barrett, and Charles Ely, is hereby incorporated byreference in its entirety as though fully and completely set forthherein.

U.S. Pat. No. 6,038,616 titled “Computer System With Remotely LocatedInterface Where Signals Are Encoded At The Computer System, TransferredThrough A 4-Wire Cable, And Decoded At The Interface”, which was filedMay 4, 1998, whose inventors are Barry Thornton, Andrew Heller, DanielBarrett, and Charles Ely, is hereby incorporated by reference in itsentirety as though fully and completely set forth herein.

U.S. Pat. No. 6,012,101 titled “Computer Network Having Commonly LocatedComputing Systems”, which was filed May 4, 1998, whose inventors areAndrew Heller, Barry Thornton, Daniel Barrett, and Charles Ely, ishereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

U.S. patent application Ser. No. 09/179,809 titled “A Technique ToTransfer Multiple Information Streams Over A Wire Or Wireless Medium” ishereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

U.S. patent application Ser. No. 09/619,989 titled “System And MethodFor Providing A Remote Universal Serial Bus”, which was filed Jul. 20,2000, whose inventors are Dan Barrett, Mike Barron, and Andrew Heller,is hereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

U.S. patent application Ser. No. 09/680,760 titled “System And MethodFor Combining Computer Video And Remote Universal Serial Bus In AnExtended Cable”, which was filed Oct. 6, 2000, whose inventor is BarryThornton, is hereby incorporated by reference in its entirety as thoughfully and completely set forth herein.

U.S. patent application Ser. No. 09/728,667 titled “Computer On A CardWith A Remote Human Interface”, which was filed Dec. 12, 2000, whoseinventors are Andrew Heller and Barry Thornton, is hereby incorporatedby reference in its entirety as though fully and completely set forthherein.

U.S. Pat. No. 5,530,960 titled “Disk drive controller accepting firstcommands for accessing composite drives and second commands forindividual diagnostic drive control wherein commands are transparent toeach other”, which was filed on Jun. 25, 1996, whose inventors are TerryJ. Parks, Kenneth L Jeffries, and Craig S. Jones, is hereby incorporatedby reference in its entirety as though fully and completely set forthherein.

U.S. Pat. No. 5,483,641 titled “System for scheduling readaheadoperations if new request is within a proximity of N last read requestswherein N is dependent on independent activities”, which was filed onJan. 9, 1996, whose inventors are Terry J. Parks, Kenneth L Jeffries,and Craig S. Jones, is hereby incorporated by reference in its entiretyas though fully and completely set forth herein.

U.S. patent application Ser. No. 09/892,324 titled “Computer SystemHaving a Remotely Located Human Interface Using Computer I/O BusExtension”, which was filed Jun. 25, 2001, whose inventors are RayDuPont, Mike Tullis, and Barry Thornton, is hereby incorporated byreference in its entirety as though fully and completely set forthherein.

U.S. patent application Ser. No. 09/892,331 titled “System ComprisingMultiple Co-Located Computer Systems Each Having a Remotely LocatedHuman Interface Using Computer I/O Bus Extension”, which was filed Jun.25, 2001, whose inventors are Ray DuPont, Mike Tullis, and BarryThornton, is hereby incorporated by reference in its entirety as thoughfully and completely set forth herein.

U.S. Provisional Application Ser. No. 60/332,143 titled “A Fail ForwardNetworked Storage System” filed on Nov. 21, 2001, whose inventor isBarry Thornton, is hereby incorporated by reference in its entirety asthough fully and completely set forth herein.

U.S. Provisional Application Ser. No. 60/411,066 titled “DistributedComputing Infrastructure” filed on Sep. 16, 2002, whose inventors areAmir Husain, Todd Enright, and Barry Thornton, is hereby incorporated byreference in its entirety as though fully and completely set forthherein.

U.S. patent application Ser. No. ______ titled “Distributed ResourceManager” filed on Nov. 21, 2002, whose inventors are Syed Mohammad AmirHusain, Todd John Enright, and Barry W. Thornton, is hereby incorporatedby reference in its entirety as though fully and completely set forthherein.

U.S. patent application Ser. No. ______ titled “System and Method forProviding Virtual Network Attached Storage Using Excess DistributedStorage Capacity” filed on Nov. 21, 2002, whose inventors are SyedMohammad Amir Husain, Todd John Enright, and Barry W. Thornton, ishereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

FIG. 1-3—Elements of Computer Systems Used in Various Embodiments

FIGS. 1-3 illustrate computer system components that may be used invarious embodiments of the invention. As FIG. 1 indicates, in apreferred embodiment, the system may include a plurality of computersystems, where each computer system may include at least one peripheraldevice, e.g., comprised in a human interface, and a computer blade. Thecomputer blade may include various components necessary for computeroperations, such as, but not limited to, a processor and a storagemedium. Other types of computer systems and components may also bewithin the scope of the invention. For further information regarding theuse of multiple computer blades in a system, please see U.S. patentapplication Ser. No. 09/728,667 titled “Computer On A Card With A RemoteHuman Interface”, which was filed Dec. 12, 2000, whose inventors areAndrew Heller and Barry Thornton, which was incorporated by referenceabove.

As will be described in detail below, various embodiments of the presentinvention may be implemented using the systems of FIGS. 1-3, where, forexample, substantially all of the information from a first storagemedium on a first computer blade may be copied to a second storagemedium on a second computer blade before, during, or after a fail-overcondition is detected on the first computer blade. Note that as usedherein, the term “fail-over condition” may refer to an impending failureof a component, to the component failure itself, or to a condition of acomputer that requires attention. A computer that indicates a fail-overcondition may be referred to as a “failed” computer, even if an actualcomponent failure has not occurred. Thus, detection of a fail-overcondition may occur before an actual failure, or may occur during orafter the failure (detection of the fail-over condition). For example, afail-over condition may indicate failure of a processor, impendingfailure of a processor, or even that the performance, e.g., theprocessing capability, of the computer needs to be upgraded or modified.Once the fail-over condition has been detected, then various actions maybe taken to restore, replace, or improve, functionality of the computer.A fail-over condition may include, but is not limited to, a hard drivecrash or a short circuit in a processor, or indications that such acrash or short circuit is imminent or likely. In one embodiment,software executing on one or more of the computer blades, optionallyincluding the first computer blade, may continually monitor the firstcomputer blade for a fail-over condition. Other ways of detecting afail-over condition on the first computer blade may also be within thescope of the invention. Once a fail-over condition is detected, aperipheral switch may switch a first computer peripheral device over toa second computer blade. In other words, the peripheral switch mayswitch the human interface from the first (failing or failed) computerblade to the second (replacement) computer blade.

In various embodiments, the information from the first storage mediummay be copied prior to the fail-over condition. For example, theinformation may be copied directly to the second computer blade, oralternatively, the information may be copied onto a third storage mediumon a third computer blade, where after the fail-over condition isdetected, the information from the first storage medium (now stored onthe third storage medium) may be copied onto the second storage mediumof the second computer blade. A peripheral switch may then switch thefirst computer peripheral device over to the second computer blade, andthe user of the first computer system may continue accessing theinformation from the first storage medium without losing user time. Ofcourse, the peripheral switch may be further operable to switch aplurality of peripheral devices in the human interface, i.e., the numberperipheral devices switched is not limited to one. In addition, aperipheral switch may not be needed in an embodiment where a backupcomponent, such as, but not limited to a backup processor or a backupstorage medium, is coupled to the first computer prior to or after afail-over condition is detected in a corresponding component on thefirst computer. For example, if a processor on the first computer has afail-over condition, a backup processor may be coupled to the firstcomputer to take the place of the processor on the first computer with afail-over condition.

FIG. 1—Computer Blades and Respective Peripheral Devices

Referring to FIG. 1, an embodiment of computer systems includingperipheral devices coupled to computer blades in a cage is shown. Whileone embodiment may include computer blades, it is noted that othercomputer types and forms may also be within the scope of the invention.In other words, the embodiment shown in FIG. 1 is intended to beexemplary only, and is not intended to limit the types or number ofcomputer systems used.

As FIG. 1 shows, connecting cables 151, 153, and 155 may connectcomputer blades 101, 105, and 109 to respective peripheral device groupsthrough respective device ports or hubs, referred to herein as C-Ports,157, 159, and 161. In one embodiment, each device port may comprise anextender device that may enable transmission of user interface signals(i.e., peripheral device signals) over distances generally not allowedby standard protocols such as USB. For further information regardingextended communications between a computer and a remote human interface,please see U.S. patent application Ser. No. 09/892,324 titled “ComputerSystem Having a Remotely Located Human Interface Using Computer I/O BusExtension”, which was filed Jun. 25, 2001, and U.S. patent applicationSer. No. 09/892,331 titled “System Comprising Multiple Co-LocatedComputer Systems Each Having a Remotely Located Human Interface UsingComputer I/O Bus Extension”, both of which were incorporated byreference above.

In one embodiment, the peripheral device groups, such as the peripheraldevice group coupled to connecting cable 151, may include a keyboard117, a pointing device, e.g., a mouse 119, a display device, e.g., acomputer monitor 121, and/or other peripheral devices for humaninterface. The computer blade, such as computer blade 105, maycommunicate with the peripheral devices coupled to the computer blade105 by sending and receiving encoded human interface signals transmittedover the connecting cable 151. In one embodiment, a cage 113, e.g., ametal cabinet or chassis, may have a plurality of slots, such as slots103, 107, and 111. The computer blades 101, 105, and 109 may be insertedinto the slots 103, 107, and 111, respectively. The cage 113 may alsoinclude cage connectors (not shown) to couple the computer blades 101,105, and 109 to their respective connecting cables 155, 153, and 151.

The computer blades 101, 105, and 109 may be installed in the cage 113at a central location, while the peripheral devices for each computerblade 101, 105, and 109 may be located remotely from the cage 113, suchas at respective work areas of the users of the computer blades 101,105, and 109. The separation of the peripheral device groups from thecomputer blades 101, 105, and 109 may allow easier software installationacross a network, such as but not limited to downloading CD-ROMs, andprovide a central location of multiple computers which may simplify bothhardware and software maintenance.

Each computer blade 101, 105, and 109 may also be coupled to a network115 through an on-board network logic (not shown). The network 115 maybe a Local Area Network (LAN) or a Wide Area Network (WAN), such as theInternet, although other networks are also contemplated. As mentionedabove, in one embodiment, the computer blades 101, 105, and 109 may beinserted into respective slots 103, 107, and 111 of the cage 113, andcoupled to respective peripheral device groups through the cageconnectors (not shown) and connecting cables 151, 153, and 155. In oneembodiment, each computer blade 101, 105, and 109 may also be coupled tothe network 115 through the cage connectors (not shown) and a networkcable, such as Ethernet cables 163, 165, and 167.

FIG. 2—Computer Blade

Referring to FIG. 2, an embodiment of a computer blade 105 is shown. Inone embodiment, the computer blade 105 may include components such asbut not limited to a slide drawer frame 205, motherboard 207, a powersupply 210, and a hard drive 208, as shown. In one embodiment, themotherboard 207, the power supply 210, and the hard drive 208 may becoupled to the slide drawer frame 205. In one embodiment, the slidedrawer frame 205 may be three rack units high (or approximately 5.25inches) to occupy a much smaller space than standard PC units, althoughother slide drawer frame 205 dimensions may also be within the scope ofthe invention.

The motherboard 207 may be a printed circuit board with components suchas but not limited to a central processing unit (CPU), memory, and LANinterface. Other types of motherboards and other types of motherboardcomponents are also contemplated. The hard drive 208 may be anon-volatile memory such as but not limited to a hard drive, opticaldrive, and/or flash memory. The computer blade 105 may communicate withexternal systems such as but not limited to peripheral devices andnetworks, through an edge connector 209. In one embodiment, the edgeconnector 209 may transmit signals such as but not limited to networksignals, input/output (I/O) signals, video signals, audio signals, anduniversal serial bus (USB) signals. For example, the edge connector maycommunicate network signals to a network and encoded human interfacesignals to a group of peripheral devices.

In one embodiment, the computer blade 105 may further include powersupply 210 mounted on the slide drawer frame 205 with an internal powersource or coupled to an external power source (not shown) to providepower to the computer blade 105. The power supply 210 may convert localmain power to an appropriate voltage for the computer blade 105. Becausecomputer blade 105 has an individual power supply 210, if the powersupply 210 fails, computer blade 105 may be the only computer blade thatfails. In one embodiment, a single power supply located in the cage 113(shown in FIG. 1) may supply power to several computer blades such ascomputer blades 101, 105, and 109 (shown in FIG. 1). However, a singlepower supply for the cage 113 (shown in FIG. 1) may be a single point offailure for the cage 113. If the single power supply fails, multiplecomputer blades may also fail, requiring multiple replacement blades. Ina system with a single power supply for a cage 113, the computer blades101, 105, and 109 may all require stand-by replacement blades connectedto another power source. If the power supply for the cage 113 fails,information from the computer blades 101, 105, and 109 may be copiedonto the replacement computer blades from other computer blades in thesystem to which information from the computer blades 101, 105, and 109had been previously copied.

As FIG. 2 also illustrates, in one embodiment, cage 113 may have aplurality of slots, such as slot 107, to house the computer blade 105.The computer blade 105 may be inserted into one of the slots of the cage113, such as slot 107. The cage 113 may include a cage connector (notshown) to couple to the edge connector 209 on the computer blade 105.The cage connector may also include an external second connector (notshown) that is electrically coupled to the computer blade 105 when thecomputer blade 105 is inserted into the slot 107. The external secondconnector may be further coupled to the connecting cables 151, 153, and155 (shown in FIG. 1) for communication of the encoded human interfacesignals to a group of peripheral devices at a remote location. The useof the cage connectors (not shown) as an intermediate connection betweencomputer blade 105 and the connecting cable 153 (shown in FIG. 1) mayallow the removal and exchange of computer blade 105 without the need todisconnect the connecting cable 153 (shown in FIG. 1) from the cage 113.If the computer blade 105 fails, the computer blade 105 may be removedand a new computer blade (not shown) inserted in a slot, e.g., slot 107.As noted above, in a preferred embodiment, when the computer blade 105fails, the user's human interface, e.g., one or more peripheral devices,may be switched to a replacement computer blade (possibly in a mannerthat is transparent to the user), after which the failed computer blademay be removed and replaced.

FIG. 3—Computer Blade Components

Referring to FIG. 3, an embodiment of a computer blade 105 having apower supply 210, hard drive 208, and motherboard 207 is shown. Thecomputer blade 105 may include elements that make up a standard PC, suchas, but not limited to, a motherboard 207 with various components suchas but not limited to a processor, e.g., a CPU 306, memory 304, andinterface logic 302, which may include network logic 305, I/O logic 307,and interface logic 303, as well as other interface circuitry associatedwith a motherboard 207, configured on a single card. The network logic305 may include a LAN or WAN connection, such as but not limited to aIEEE803.2 (10/100 BaseT) Ethernet, and circuitry for connecting toperipheral devices coupled to the computer blade 105. The computer blade105 may be electrically coupled to the cage 113 (shown in FIG. 2)through the edge connector 209 that may face to the rear of the computerblade 105. In an embodiment of the invention, the computer blade 105 mayslide into a slot 107 (shown in FIG. 2) of the cage 113 (shown in FIG.2), making contact with the cage connector (not shown).

In one embodiment, the computer blade 105 may further include a networkinterface logic 305 included on a printed circuit board for interfacingto a network. The network logic 305 may encode network signals into aformat suitable for transmission to the network. The network logic 305may also receive encoded network signals from the network, and decodethe encoded network signals. In one embodiment, the motherboard 207 mayfurther include logic supporting PCI slot-based feature cards.

In one embodiment, the components on the computer blade 105 may bearranged from front to back for thermal efficiency. The interface logic302 may be located at the rear of the computer blade 105, while thepower supply 210 and hard disk 208 may be located at the front of thecomputer blade 105. In one embodiment, the computer blade 105 may havedifferent slide drawer frame shapes, such as but not limited to square,rectangle, cubic, and three-dimensional rectangular forms. In oneembodiment, the computer blade 105 may have components mounted on eitherside of the computer blade 105. The computer blade 105 may also havecomponents mounted on both sides of the computer blade 105. If the slidedrawer frame 205 has a three-dimensional shape, the components may bemounted on an inside surface and outside surface of the slide drawerframe 205.

FIGS. 4 a, 4 b, 4 c, and 4 d-Computer Blade Storage Patterns

Referring to FIGS. 4 a, 4 b, 4 c, and 4 d, embodiments of computer bladestorage patterns are shown for three computer blades 401, 403, and 405.It is noted that the systems shown in FIGS. 4 a, 4 b, 4 c, and 4 d aremeant to be exemplary and are not intended to limit the system or methodto any particular number of computers. As shown in FIG. 4 a, in oneembodiment, to prepare for a failure of computer blade 401, theinformation from a storage medium on the computer blade 401 may becopied (i.e., backed up) onto a storage medium on the computer blade403. In one embodiment, a first portion of the information on thecomputer blade 401 may be located in the random access memory (RAM) ofthe first computer blade 401 and a second portion of the information maybe located on a hard drive of the computer blade 401. Other locations ofinformation from the computer blade 401 may also be within the scope ofthe invention. If the computer blade 401 fails or indicates a fail-overcondition, a peripheral device coupled to the computer blade 401 througha peripheral switch may be switched over to the computer blade 403through the peripheral switch, thereby enabling a user of computer blade401 to continue accessing the information (originally) from computerblade 401 (but now on computer blade 403). In one embodiment, theinformation originating from computer blade 401 (and previously copiedonto the storage medium of computer blade 403) may also be copied ontothe storage medium of computer blade 405. The peripheral switch may alsobe operable to switch the peripheral device over to computer blade 405in the event that both computer blades 401 and 403 fail. In anotherembodiment, upon detecting a fail-over condition of a processor in thecomputer blade 401, a backup processor may be switched over to thecomputer blade 401 to access and run off of the storage medium on thecomputer blade 401. In another embodiment, if the storage medium on thecomputer blade 401 fails, information from a backup computer blade maybe copied over to a backup storage medium, and the components of thecomputer blade 401 may access the backup storage medium.

In one embodiment, shown in FIG. 4 b, the information on the storagemedium of computer blade 403 may be copied onto the storage mediums ofcomputer blade 401 and 405. Similarly, in one embodiment, theinformation on the storage medium of computer 405 may be copied onto thestorage mediums of computer blade 401 and 403, as shown in FIG. 4 c.Thus, various of the computer blades may provide backup storage for oneanother.

In one embodiment, the computer blade 401 may detect and determineidentities of one or more local computer blades, such as, but notlimited to computer blades 403 and 405, on a subnet. Once detected, thecomputer blade identities may be stored and cached for later access onthe computer blade 401. The detected computer blades to be used inbacking up a computer blade may be assigned automatically or manually.In one embodiment, e.g., through an administration interface, computerblades may be assigned to each other at any time. A “replication factor”configuration value, may define how many other computer blades to sendcopies of the information on the computer blade to be backed up. Forexample, if computer blades 401, 403, and 405 form a subnet, thecomputer blade 405 may detect the computer blades 401 and 403 and thenchoose the computer blade 401 and the computer blade 403 as computerblades to send backups to. If the computer blade 405 has a fail-overcondition, either the computer blade 401 or the computer blade 403 maybe used to restore information to the computer blade 405, or used tosend the information originating from the computer blade 405 to areplacement computer blade.

In one embodiment, the computer blades in one subnet may be backed up tocomputer blades on another subnet. For example, the computer blades inone subnet may be able to detect the computer blades in another subnet,and then the configuration of which computer blades are used to back upother computer blades between the two subnets may be performed, e.g., byan administrator or automatically. In one embodiment, a web basedconfiguration interface may allow computer blades to be assigned orreassigned to remote computer blades, including blades on other subnets.Computer blades may backup with neighboring computer blades, computerblades in a same building, and/or computer blades in a remote location.In one embodiment, computer blades may be backed up to bothgeographically local computer blades and geographically remote computerblades. The local computer blades may provide quicker restoration on areplacement computer blade and remote computer blades may provideincreased security and reliability.

For example, in one embodiment where information from a first computerblade is backed up onto both a local computer blade and a remotecomputer blade, if a fail-over condition occurs on the first computerblade, and the local computer blade with the backup is functional,backed up information can be copied to a replacement computer blade fromthe local computer blade without having to copy information from theremote computer blade. Copying information from the remote computerblade may take longer than from the local computer blade. If multiplecomputer blades at a site have a fail-over condition, (e.g., if both thefirst computer blade and the local computer blade with the backup fail)the remote computer blade may have a copy of the information from thefirst computer blade to copy to a replacement computer blade.

In one embodiment, several local computer blades may backup to a singleremote computer blade. The local computer blades may also be backed upto other local computer blades. Having one remote computer blade tobackup to may make the remote backups more manageable. The single remotecomputer blade handling multiple backups may be more powerful than aremote computer blade handling one backup. The remote computer blade maybe managed through a web-based management interface. In one embodiment,the web-based management interface may be used by an administrator toschedule snapshots and manage configuration settings.

To optimize bandwidth during backups (especially remote backups),several factors including, but not limited to, the replication factor,the frequency of sending backup information to other computer blades,and the kind of connectivity that exists between the local and remotecomputer blades may need to be considered.

As mentioned above, in one embodiment, the information on computer blade401 (and/or from other computer blades) may be backed up in a snapshotmethod in which all of the information to be copied is bulk copied atspecified refresh times, where refresh times may indicate particulartimes to refresh (e.g., every hour on the hour, once per day at 3:00a.m., etc.), or may indicate intervals between successive refreshes. Forexample, in one embodiment, a refresh time may be an hour such that theinformation is bulk copied from the first storage medium onto the secondand/or third storage medium once per hour.

In another embodiment, a delta method may be used to copy theinformation from the first storage medium, where only a differencebetween a previous copy of the information copied to the second and/orthird storage medium and the current information on the first storagemedium is added to the second and/or third storage medium. The deltamethod may take less time to update but it is conceivable that spacerequired on the storage medium of computer blade 403 may grow to verylarge proportions because the delta method may keep adding informationwithout removing deleted information. The first time the delta method isused it may function analogously to the snapshot method because theinitial copy may encompass all the information from the storage mediumon the computer blade 401. In another embodiment, the growth of archiveddata is automatically managed by the “aging” feature which removesarchives or deltas older than a user-defined time period.

In one embodiment, if the computer blade 401 regularly backs up to boththe computer blade 403 and the computer blade 405, and the computerblade 405 becomes non-functional, the computer blade 401 may continue tobackup to the computer blade 403. If the computer blade 401 is using adelta method, incremental backups on a computer blade may be tagged andarchived. If the computer blade 405 becomes functional again, a peersyncmethod may be used to update the last incremental backups from thecomputer blade 401 to the computer blade 405. For example, if thecomputer blade 401 backs up information from the computer blade 401 ontothe computer blade 405 using a delta method, the computer blade 405 mayhave missed several incremental backups (i.e. backups covering changesin information on the computer blade 401 since the last backup.) Toupdate the computer blade 405, when the computer blade 405 becomesfunctional, the computer blade 401 may send the computer blade 405 acatalog of past incremental backups. The computer blade 405 may comparethe catalog to the incremental backups the computer blade 405 currentlyhas and then query the computer blade 401 for the incremental backupsthe computer blade 405 needs to become current. In one embodiment, anarchive of the past incremental backups may be sent along with thecatalog, and the computer blade 405 may not query the computer blade 401for the incremental backups. Instead, the computer blade 405 may pullthe needed incremental backups from the archive.

In one embodiment, information being written to the storage medium ofthe computer blade 401 may also be written to the computer blade 403 atsubstantially the same time. In other words, rather than backing up theinformation after it has been written to computer blade 401, theinformation writes may be performed effectively in parallel, or at leastin conjunction. If the computer blade 401 fails, the peripheral switchmay switch the peripheral device over to the computer blade 403. In oneembodiment, the information on the storage medium on computer blade 403(which may mimic or replicate the information on the storage medium ofthe failed computer blade 401) may be copied onto the computer blade405. The peripheral switch may switch the peripheral device from thecomputer blade 401 over to the computer blade 405. Thus, in thisexample, although the information of computer blade 401 was backed-up oncomputer blade 403, computer blade 405 is used as the replacementcomputer blade, and so the backed-up information is copied to computerblade 405 and the peripheral device switched from the failed computerblade 401 to the replacement computer blade 405.

In one embodiment, as shown in FIG. 4 d, the hard drives on the computerblades 401, 403, and 405, such as, but not limited to, hard drive 208shown in FIG. 3) may share memory space using a virtual network storagespace (VNAS) system incorporating a decentralized peer-to-peer sharingprocess. Information stored on the computer blade 401 may also be storedon computer blades 403 and 405. If the computer blade 401 fails, aperipheral switch may switch a peripheral device from computer blade 401over to computer blade 403. For example, computer blade 403 may thenaccess the information originally stored on or associated with thecomputer blade 401 from the storage medium of computer blade 403 and thethird storage medium of computer blade 405. In other words, theinformation originally stored on the failed computer blade 401 may bedistributed over the computer blades 403 and 405, but may be accessible(to replacement computer blade 403) as if stored on a single (virtual)storage medium. In another embodiment, the (backed-up) informationstored on the computer blades 403 and the 405 may be organized (e.g.,copied) onto the replacement computer blade 403 to have the informationfrom the failed computer blade 401 collected onto one computer. Theperipheral switch may then switch the peripheral device from the firstcomputer over to the computer with the organized or collected copy.

In one embodiment, failure management software may execute to redirectinformation reads and information writes directed at the failed harddrive to an operating hard drive until a replacement computer orreplacement hard drive is brought into service.

In one embodiment, the backup copy of the lost information may alreadybe on a replacement disk. As noted above, in a preferred embodiment, theentire process is transparent to the user, i.e., the user may not noticethe failure of the computer blade.

Referring back to FIG. 4 a, in one embodiment of a topology for thecomputer blades 401, 403, and 405, the computer blades 401, 403, and 405may use failure information backup in a virtual network attached storage(VNAS) system. In one embodiment, the information may exist in multiplelocations across the VNAS system composed of computer blades 401, 403,and 405, such that an occurrence of a failed computer blade 403 does notresult in the loss of vital information from the failed computer blade403. Other information backup strategies may also be within the scope ofthe invention to ensure information redundancy. For example, other RAID(Redundant Array of Inexpensive Disks) levels may be used.

In one embodiment, an underlying distributed computer infrastructure(DCI) may be used to distribute resources among the computer blades.Each computer blade may be assigned a number of “peer” or neighborcomputer blades that may be used to backup information from the storagemedium of a computer blade. “Peer” computer blades, such as, but notlimited to, computer blades 403 and computer blade 405, may be assignedto a nearby computer blade 401. In one embodiment, computer blades maybe backed up onto computer blades at a remote location. For example,multiple groups of computer blades at multiple locations may be backedup to a one or more central locations, such as, but not limited todisaster recovery centers, with replacement computer blades. In oneembodiment, backups to the disaster recovery center may be scheduled sothat multiple groups of computer blades can coordinate their backups. Inone embodiment, a disaster recovery system may provide a centrallocation for a group of moving computer blades to use forinitialization. For example, several moving field hospitals usingcomputer blades with the same set of programs and user preferences mayinitialize their computer blades from a central location of computerblades.

FIG. 5—Restoring a Failed Computer Blade Onto a Backup Computer Blade

Referring to FIG. 5, an embodiment of restoring or rebuilding a failedcomputer blade's functionality (e.g., computer blade 403) onto a backupcomputer blade (e.g., computer blade 501) is shown. For example, thefailed computer blade 403 may have a fail-over condition such as a fatalhard drive crash or a short-circuit on the motherboard 207. In oneembodiment, rebuilding a desktop experience (for a user of the failedcomputer) may include identifying a replacement computer blade 501 touse, switching via the connector cable 153 (shown in FIG. 1) to theuser's desktop connector, and loading failed computer blade informationfrom either the first computer blade 401 or (assuming a previous backupto computer blade 405) from third computer blade 405. In one embodiment,the fail-over condition of computer blade 403 may be detected andsignaled automatically by computer blade 403, or by computer blades 401and/or 405. Other signals and other sources may also be within the scopeof the invention.

In one embodiment, the information originating from the computer blade401 (to be copied to another computer blade for backup) may include userpreferences. Including the user preferences with the information to becopied to another computer blade 403 may enable a move managerapplication and/or a switch manager application (or equivalent) toseamlessly provide a replacement computer blade (e.g., computer blade501) with a similar look, feel, and functionality as a computer bladethat has a fail-over condition. The move manager, as discussed below,may implement the transfer of information from one computer blade toanother computer blade. The switch manager application may implementswitching a first peripheral from a first computer blade to areplacement computer blade.

In one embodiment, the fail-over condition of computer blade 403 may besignaled manually, such as by a user calling a system administrator. Inone embodiment, reconnecting a user's peripheral devices, e.g., keyboard123 (see FIG. 1), mouse 125, and monitor 127, may include identifyingreplacement computer blade 501, loading the failed computer blade 403information onto the replacement computer blade 501 from either thefirst computer blade 401 or the third computer blade 405, andestablishing a connection between the user's peripheral devices and thereplacement computer blade 501, such as via a soft switch (not shown).In one embodiment, while the information is being restored to thereplacement computer blade 501, information reads and information writesfrom and to the failed computer blade 403 may be diverted to thereplacement computer blade 501 so that a user's productivity is notinterrupted. In one embodiment, a replacement computer blade 501 mayhave the standard operating system and applications already stored onit. When a fail-over condition occurs with a user's computer blade, theperipheral device for the user's computer blade may be switched over tothe replacement computer blade and the user may begin using theapplications already stored on the replacement computer blade. Backupinformation may be restored to the replacement computer blade in thebackground, and while the user uses applications already stored on thereplacement computer blade, writes the user performs may be diverted tothe replacement computer blade.

In one embodiment, information may be copied onto a backup computerafter a fail-over condition has been detected. For example, as notedabove, first computer 401 may have a first processor and a first storagemedium coupled to the first processor. The first storage medium may be amedium including but not limited to a random access memory and a harddisk drive. Second computer 403 may have a second processor and a secondstorage medium coupled to the second processor. A communication link,e.g., a bus (not shown), may couple the first computer 401 to the secondcomputer 403. In addition, a peripheral switch may be coupled to thefirst computer 401 and the second computer 403 and may route signalsfrom a human interface, such as but not limited to a first peripheraldevice coupled to the first computer 401, to the first computer 401through a peripheral device port coupled to the first computer 401.

In one embodiment, the second storage medium on the second computer 403may store program instructions executable by the second processor todetect a fail-over condition of the first computer 401 and copyinformation from the first storage medium onto the second storagemedium, thereby making the information accessible by the secondprocessor. Part of or substantially all of the information on the firststorage medium may be copied onto the second storage medium. Theperipheral switch may be configured to route signals between the firstperipheral device and the second computer to make the second processorand the second storage device accessible by the first peripheral device.In one embodiment, copying information from the first storage medium tothe second storage medium and routing signals from the first peripheraldevice to the second processor may occur without user input to triggerthe copying and routing, i.e., the data fail-over process may beperformed programmatically. Therefore, the copying and re-routing may betransparent to a user of the first computer 401. Thus, in oneembodiment, the peripheral switch may switch the signals from the firstperipheral device targeted to the first computer 401 over to the secondcomputer 403 without a user input to trigger the switching. In anotherembodiment, if the first storage medium fails, the first processor maysimply access the second storage medium (e.g., of the second computer403) instead of switching the first peripheral device to the secondprocessor (e.g., the second computer blade 403). In one embodiment, ifthe first processor has a fail-over condition, but the first storagemedium is still functional, the second processor may simply access thefirst storage medium and the first peripheral switch may be switchedover to the second processor.

In one embodiment, the storage medium on the second computer 403 maystore program instructions executable by the second processor to copyinformation from the first storage medium onto the second storage mediumto make the information accessible by the second processor before thesecond processor detects a fail-over condition of the first computer401. Part of or substantially all of the information on the firststorage medium may be copied onto the second storage medium, where theinformation may be stored (and optionally updated) until a fail-overcondition (of the first computer 401) is detected.

In one embodiment, the information may be stored on additional storagemediums, e.g., in case the second computer also has a failure, e.g., ahard disk crash. In one embodiment, the information from the firststorage medium may be repeatedly copied onto the second storage mediumto keep the information on the second storage medium current with thecurrent state of the first storage medium. For example, in oneembodiment, the information on the first storage medium may be copiedover the previously copied information from the first storage medium onthe second storage medium. In another embodiment, the information fromthe first storage medium may be initially copied onto the second storagemedium, and then subsequent changes to the information on the firststorage medium may be stored onto the second storage medium over time.The information on the first storage medium may then be reconstructedusing the initial copy stored and the subsequent changes. Periodically,the initial copy and subsequent changes may be overwritten with a newcopy of the information on the first storage medium, e.g., to preventthe stored subsequent changes from filling up the second storage medium.

In one embodiment, the first storage medium may also use space on thesecond storage medium to store information not stored on the firststorage medium, e.g., may use the space for purposes other than backup.The first computer 401 may keep a record of the location of the extrainformation stored on the second storage medium. In one embodiment, theinformation from the first computer 401 may also be stored on otherstorage mediums, e.g., on other computers. For example, if the firststorage medium is running out of space, it may use space on the secondstorage medium or other storage mediums to save information to, thususing other computers' storage mediums for overflow. In one embodiment,the information on or originating from the first storage medium may bestriped onto other storage mediums. In addition, information from thesecond storage medium may be copied onto the first storage medium and/orother storage mediums in case the second computer fails or the secondcomputer needs additional space to store its information.

In one embodiment, a third computer 405 including a third processor anda third storage medium coupled to the third processor may also becoupled to the communication link. The third storage medium may storeprogram instructions executable by the third processor to copy (i.e.,backup) information from the first storage medium onto the third storagemedium. The program instructions may be further executable by the thirdprocessor to detect a fail-over condition of the first computer 401, andto copy information from the third storage medium to the second storagemedium so that the information is accessible by the second processor.The peripheral switch may then operate to route signals between thefirst peripheral device and the second processor if the first computer401 fails.

In another embodiment, the third storage medium may not be comprised inthe third computer, e.g., computer 405, but may be coupled to thecommunication link as a substantially independent networked resource. Inthis embodiment, the second computer 403 may copy information from thefirst storage medium (e.g., from the first computer 401) onto the thirdstorage medium. Thus, the second computer 403 may backup informationfrom the first computer 401 onto the third storage medium. After afail-over condition of the first computer 401 is detected, informationfrom the third storage medium (that was originally on the first computer401) may be copied to the second storage medium to make the informationaccessible by the second processor, i.e., by the replacement computer403. The peripheral switch may then route the signals from the firstperipheral device to the second computer 403.

FIGS. 6-8—Flowcharts of Methods for Responding to a Fail-Over Condition

FIGS. 6 through 8 are flowchart diagrams of various methods forresponding to a detected fail-over condition. Various embodiments of themethods described below may be implemented in accordance with any of thesystems described above, where a first computer, including a firstprocessor and a first storage medium coupled to the first processor,couples to a first peripheral device via a peripheral switch, where theperipheral switch may be configured to route signals between the firstperipheral device and the first computer. A second computer, including asecond processor and a second storage medium coupled to the secondprocessor, may be coupled to the first computer via a communicationlink, as described above. The storage medium of the first and/or thesecond computer may store program instructions executable by the firstand/or second processor to implement various embodiments of the methodsdescribed below. As also described above, in some embodiments, othercomputers, e.g., a third computer, may also perform all or portions ofthe methods described herein. It should be noted that in variousembodiments of the methods described below, one or more of the stepsdescribed may be performed concurrently, in a different order thanshown, or may be omitted entirely. Other additional steps may also beperformed as desired.

As FIG. 6 shows, in 601, a fail-over condition for the first computermay be detected, for example, regarding the first processor or the firststorage medium, although the fail-over condition may relate to any othercomponents or subsystems of the first computer. As mentioned above, thefail-over condition may indicate a failure of the respective component,or may indicate that such a failure is likely or imminent, although inthis particular embodiment, the fail-over condition does not include anactual failure of the first storage medium, since information is copiedtherefrom after detection of the fail-over condition. The detectionprocess generally involves some type of monitoring of the firstcomputer. For example, various metrics may be determined that indicate afail-over condition, such as, for example, read/write error rates,operating temperatures, and so forth, and these metrics may be monitoredto detect the fail-over condition. Of course, in various embodiments,the monitoring process may be performed by the first computer itself, orby any other computers coupled to the first computer, as desired.

In 603, information stored on the first storage medium may be copiedonto the second storage medium, thereby making the informationaccessible by the second processor. For example, in a situation wherethe first processor fails the second computer may access the firststorage medium and copy at least a portion of its contents to the secondstorage medium, after which the second processor, i.e., the secondcomputer, may access the information. As another example, if thefail-over condition is due to an imminent failure of the first storagemedium, the second computer may access the first storage medium andattempt to copy the desired portion of its contents to the secondstorage medium, after which the second processor may access theinformation, although it is noted that in some cases the storage mediummay fail before all of the desired information has been copied.

Finally, once the information has been copied to the second computer,then in 605, the peripheral switch may be configured to route signalsbetween the first peripheral device and the second computer. The firstperipheral device may then access the second processor and the secondstorage medium. It should be noted that although the method describedrefers to the first peripheral device being switched from the firstcomputer to the second computer, in preferred embodiments, a pluralityof peripheral devices, i.e., human interface devices composing a humaninterface, are coupled to the first computer, and are subsequentlyswitched by the peripheral switch to the second computer. Thus, theperipheral switch may operate to switch the entire human interface ofthe first computer to the second computer.

Thus, in the embodiment of FIG. 6, the information stored on the firstcomputer may be copied to the replacement computer (i.e., the secondcomputer) after detection of the fail-over condition. It is noted thatthis approach may make transparency of the process to the userproblematic, in that there may be a noticeable delay between thedetection of the fail-over condition and resumption of operations usingthe replacement computer.

In the embodiment shown in FIG. 7, actions are taken prior to detectionof the fail-over condition that may significantly improve, i.e.,decrease, the time it takes to resume user operations with thereplacement computer. In other words, compared to the method of FIG. 6,the expected downtime for the user may be substantially reduced.

As FIG. 7 shows, in 701, information from the first storage medium maybe copied onto the second storage medium to make the information fromthe first storage medium accessible by the second storage processor. Inother words, information stored on the first storage medium may bebacked-up onto the second storage medium. In various embodiments, thisbackup operation may be performed by the first computer, by the secondcomputer, or by another computer, e.g., the third computer.

In 703, a fail-over condition may be detected for the first computer,e.g., related to the first processor and/or the first storage medium (orany other component of the first computer). It is noted that in variousembodiments, the detection of the fail-over condition may be performedby various of the computers in the system, e.g., by the first, second,and/or third computers.

In response to the detection of the fail-over condition, in 705, theperipheral switch may operate to route signals between the firstperipheral device and the second computer. The first peripheral devicemay then access the second processor and the second storage medium. Inother words, the peripheral switch may switch the human interface of thefirst computer over to the second computer, as described above.

Thus, in the embodiment of FIG. 7, because the information is backed-upto the second computer, i.e., the replacement computer, prior to thefail-over condition, once the fail-over condition for the first computeris detected, the switchover from the first computer to the replacementcomputer may occur substantially immediately, i.e., with minimum delay.Thus, in this embodiment, transparency to the user of the switchoverprocess may not be difficult to achieve.

In the embodiment shown in FIG. 8, the third computer, including thethird processor and third storage medium is coupled to the first andsecond computers via communication link

As shown in FIG. 8, in 801, information from the first storage mediummay be copied onto the third storage medium. In other words, informationstored on the first storage medium may be backed-up onto the thirdstorage medium. As noted above, in various embodiments, this backupoperation may be performed by the first computer, second computer, thethird computer, or yet another computer included in the system.

In 803, a fail-over condition may be detected for the first computer,e.g., related to the first processor and/or the first storage medium (orany other component of the first computer). As mentioned above thedetection of the fail-over condition may be performed by various of thecomputers in the system, e.g., by the first, second, and/or thirdcomputers (or others).

In response to the detection of the fail-over condition, in 805, theinformation from the first storage medium may be copied from the thirdstorage medium onto the second computer, i.e., onto the second storagemedium, to make the information accessible by the second processor. Inother words, the information may be copied from the backup computer (thethird computer) to the replacement computer (the second computer).

Finally, in 807, the peripheral switch may be configured to routesignals between the first peripheral device and the second computer (thereplacement computer). The first peripheral device may then access thesecond processor and the second storage medium (and may be accessed bythe second processor).

Similar to the embodiment of FIG. 7, this embodiment includes backing upthe information stored on the first computer (to the third computer)prior to detection of the fail-over condition, and thus may facilitatetransparency of the process from the user's perspective.

Resource Manager

Various embodiments of the methods described above with reference toFIGS. 6-8 may be performed by a resource manager. In other words, someor all of the storing, monitoring, detecting, and configuring may beperformed or managed by the resource manager. The resource manager maybe operable to manage the plurality of computers and associatedperipheral devices. In one embodiment, the resource manager may belocated on one of the computer blades. In another embodiment, a copy ofthe resource manager may operate on each of the computer blades, suchthat a central server may not be needed. In yet another embodiment, theresource manager may be distributed across the plurality of the computerblades and each computer blade may perform a respective portion of theresource manager, such that a central server may not be needed. In eachof these embodiments, the resource manager, or resource managers, mayoperate to schedule efficient information storage among the plurality ofcomputer blades, e.g., computer blades 401, 403, and 405.

In one embodiment, the resource manager may operate to monitor resourceusage for each of the plurality of computers. In other words, theresource manager may monitor performance metrics for each computer suchas a total memory size, a used memory size, a virtual memory size,peripheral type, available ports, processor type, processor speed, typeof installed applications, whether a user is logged in, frequency oflogins, percentage of usage of CPU, percentage of usage of hard disks,network hardware installed, network usage, usage of installedapplications, video specifications, usage of CD-ROM, a variable impartedby the operating system, and a variable imparted by the BIOS, amongothers.

In one embodiment, the resource manager may function both as an analyzerand a controller for the system. As an analyzer, the resource managermay utilize information about the performance and use patterns of eachof the plurality of computers. Based on the performance and usepatterns, the resource manager may compute demand and usage metrics orissues (e.g., processor time, memory usage and demand, hard drivememory, and network information). The resource manager may also generatereports on applications and links used by the system. These patterns maybe used to generate a map of the demands on the system's collectiveresources over time. The continually updated map may be used by thesystem administrator and/or the resource manager in order to performpredictive and proactive scheduling of resources to users. Other uses ofthe map may also be within the scope of the invention.

In one embodiment, the resource manager may include or invoke a movemanager to move users from their respective current computers to othercomputers, as described in detail below with reference to FIGS. 7-10.

FIGS. 9-14—Screen Shot Embodiments of Various Interfaces

In one embodiment, software used to manage functions such as, but notlimited to, assignment of computer blades to other computer blades forbackup, detecting a fail-over condition in a computer blade, andmanaging the copy process from a backup computer blade to a replacementcomputer blade, may be installed and managed using a graphicalinstallation program. In one embodiment, installation may be performedby a computer blade local administrator. The installation program may berestricted to administrator access because the installation program mayrequire system resources to which only the administrator may haveaccess. However, other installers are also contemplated. While variousembodiments of screens and interfaces are shown, it noted that otherscreens and interfaces may also be within the scope of the invention.

FIG. 9—Screen Shot of a Login Screen

FIG. 9 illustrates an embodiment of a login screen 901 of a managementconsole, e.g., a web-based management interface. The login screen 901may appear before a management session is started. In one embodiment, toenter the management console, a user may need domain administrationrights. A login may be validated through a primary domain controller. Ausername 903 and password 905 may be registered with a network tovalidate users on the management console. The user may supply a username903, password 905, and a domain name 907, although other user inputs arealso contemplated. Once the username 903, password 905, and domain name907 are authenticated, the user may be automatically redirected to amanagement console main menu or screen, described below.

FIG. 10—Screen Shot of an Auto-Discovery Screen

FIG. 10 illustrates an embodiment of a main screen in a web-basedmanagement interface such as may be used in various embodiments of theresource manager. For example, the main screen shown FIG. 10 illustratesan auto-discovery screen 1001 showing a list 1005 of computer blades ona local subnet. In one embodiment, clicking on a name of a computerblade may load the management interface with information about thatcomputer blade. In the embodiment shown, an indicator 1003 in the topleft hand corner of the main screen displays the name of the computerblade to which the administrator is currently connected (e.g., acomputer blade named swlab1). When management software is firstinstalled on a computer blade, the administrator or user may click‘Discover Nodes’ 1007, and if no computer blade names appear, theadministrator or user may click “Re-discover” 1009 to get a list ofcomputer blade names.

FIG. 11—Screen Shot of a Configuration Screen

FIG. 11 illustrates an embodiment of a configuration screen 1101. Invarious embodiments, the configuration file for each respective computermay have a standard location on that computer (e.g., the administratormay not need to determine the location of each configuration file oneach computer when performing data fail-over). In another embodiment, aparameter indicating a location of a configuration file for a backupcomputer may be entered by an administrator. In one embodiment, a rootdirectory 1105 may list the location on a storage medium that may beconsidered as a starting point for a backup process, including, but notlimited to, archiving. A subdirectory may be included in the rootdirectory 1105 for the backup process. In a preferred embodiment, anoptimum setting for the parameter may point to or indicate the locationof preferences file (e.g. a Microsoft™ Windows Documents and Settings)folder to backup user information and preferences for local users of acomputer blade. A replication factor 1111 may define how many peers tosend local information to and may be used to automatically assign theappropriate number of other computer blades to the local computer blade.A directory exclusion list 1107 may list the names of directories thatare not to be included in the backup process, even if they aresubdirectories of the root directory. The directory exclusion list 1107may explicitly exclude system or binary folders that may be unnecessaryto backup. File exclusion 1109 may indicate a comma-delimited list ofextensions (e.g., .exe, .mpg, etc.) that may not be backed up. Thecomma-delimited list may include .mp3 or other rich media files that maynot be important enough to warrant backup.

FIG. 12—Screen Shot of a Scheduling Interface

FIG. 12 illustrates an embodiment of a screen for a scheduling interface1201. A time-of-day drop down list 1203 and a frequency selection list1205 may allow a time and frequency to be scheduled. An added time inthe time-of-day drop down list 1203 may be added or removed. In oneembodiment, a “weekly” frequency schedule may also be entered. Forexample, if “6 am, weekly” is entered into the “weekly” frequency, thebackup may be taken once a week at 6 am. Frequent backups may causeincreased network activity. However, in one embodiment, if a deltamethod of backup is used, only files changed from the last backup may bearchived and sent. In addition, in environments where files are notchanging very frequently, very frequent snapshots may not be needed.

FIG. 13—Screen Shot of an Information Recovery View

FIG. 13 illustrates an embodiment of an information recovery view 1301.In the example shown, three archives, each representing a file or set offiles in a backup, may be listed in archive contents listings 1303,1305, and 1307, along with sizes 1308, names 1304, and time of eacharchive 1306. In one embodiment, a “View Contents” button 1309, 1313,and 1315 may be placed next to each entry. The “View Contents” button1309, 1313, and 1315 may be clicked to view contents of each archives Anext button may control sequential restoration. For example, eacharchive may represent changes between two points in time (e.g., anarchive created at 12 p.m. may represent changes that occurred to filesbetween the time of a last backup at 10 p.m. and 12 p.m.). The backupsmay be used to restore a computer blade to the last archived state ofthe computer blade, or the backups may be used for controlled rollbacksto earlier versions. The backups may be used for controlled rollbacks ifaddition of some information to the backup resulted in the corruption ofimportant files or documents.

In one embodiment, when the “Recover Sequentially to this archive”button 1317, 1319, and 1321 is clicked for a particular archive in abackup, the button may cause a restoration of each archive up to andincluding the selected archives For example, if archives A, B, C, D, E,and F, are displayed (not shown), clicking on archive D may result in A,B, C and D being restored to a replacement computer blade. However, ifthere are additional archives, E and F, they will not be restored. Theadministrator may return to this view and choose further restoration forE, or both E and F. In addition, in one embodiment, the restoration to areplacement computer blade may be non-destructive. In other words,though the restoration may overwrite existing files when their namesclash with files present in a restored archive, the restoration may notdelete files that do not exist at all in the restored archives. Forexample, if files X, Y and Z are present in a next archive to restore toa replacement computer blade in a sequential restoration, and prior torestoring the next archive, older versions of X and Y, and a completelydifferent file, W, have already been copied over to the replacementcomputer blade from previous archives, the restore process may overwritefiles X and Y with archived versions of X and Y, may create a new fileZ, and may not alter file W.

In one embodiment using VNAS, files may be replicated throughout thenetwork at various storage devices that participate in the VNAS cluster.If one of the underlying VNAS storage devices fails, any requests fordata on the failed device may be redirected to a functioning machinehaving a copy of the requested data. This redirection may be handled ina way that is transparent to the user. Thus, the information recoveryview 1301 may be little-used in many circumstances where VNAS isutilized and the replication factor is sufficient to provide adequatecopies of data.

FIG. 14—Screen Shot of an Archive View Screen

FIG. 14 illustrates an embodiment of an archive view screen 1401. In oneembodiment, each file 1403, each file size 1405, and each file's date ofcreation 1407 may be listed. Checkboxes, such as checkbox 1409, may beselected for partial restoration of an archives Corrupted oraccidentally deleted information from backups may be selected andrestored.

FIG. 15—Memory Stack For a Computer Blade

Referring to FIG. 15, an embodiment of a memory stack for a computerblade storing information from other computer blades is shown. In oneembodiment, the user's computer blade, e.g., computer blade 403, and twoadditional computer blades, e.g., computer blades 401 and 405, may eachuse memory space on the hard drive 208 in the user's computer blade 403.In the embodiment shown, the memory spaces used by the blades includememory spaces 1503, 1505, and 1507, although in other embodiments, othermemory spaces may be defined and used. In addition, as FIG. 15indicates, there may be additional memory space 1509 available for useby a virtual network attached storage (VNAS) system 1509. In oneembodiment, a storage network with a storage area network server may becoupled to the computer blade 401 and 405. The storage network servermay make the storage medium of computer blade 401 accessible by theprocessor of the computer blade 405, and to make the storage medium ofthe computer blade 405 accessible by the processor of the computer blade401. In a preferred embodiment, the organization and manipulation of theuser's computer blade memory space may be such that the blade memoryspace does not have a single point of failure, as described below indetail. By eliminating single points of failure, the computer blades401, 403, and 405 together may be more reliable for use in suchapplications as e-commerce, trading floors, and repair call centers,among others.

In one embodiment, each computer blade 401, 403, and 405 may have somefile server functionality. The file server functionality may includesome I/O capabilities, and may also include functionality fornegotiating file write and read protocols. Communicating with thecomputer memory on the computer blades 401, 403, and 405 may beanalogous to communicating with a standard file server attached memory.The computer blades 401, 403, and 405 may negotiate information writessimilar to a file server, and order and prioritize transactions. In oneembodiment, the computer blades 401, 403, and 405 may also implementstriping analogous to one used by RAID (Redundant Array of InexpensiveDisks).

A fail-forward hard drive may also utilize NAS/SAN techniques. In oneembodiment, the computer blades 401, 403, and 405 may operate as adistributed NAS server. For example, in one embodiment, the computerblades 401, 403, and 405 may utilize unused memory space in a manneranalogous to that used by NAS and SAN, and may also track the locationof hardware and information in the system. In one embodiment, a virtualNAS (VNAS) system may be implemented where the NAS server software isdistributed across the peer computer blades 401, 403, and 405 (and/orother computer blades) in the network, thereby eliminating the NASserver as a point of failure. In one embodiment, each of the computerblades 401, 403, and 405 may maintain a copy of the NAS server software.In one embodiment, the computer blades 401, 403, and 405 may store theNAS server software and may be able to transfer a copy of the softwareto one of the remainder of the computer blades 401, 403, and 405 in theevent of a failure of a computer blade 401, 403, or 405. As mentionedabove, the computer blades 401, 403, and 405 may also use computerblades 401, 403, and 405 (i.e., each other) for other software storage,as desired.

As described in detail above, when a hard drive or computer bladefail-over condition occurs, failure management software may execute torebuild the hard drive contents on a replacement hard drive, and replacethe failed computer blade in the network with a replacement computerblade. In one embodiment, the failure management software may routeinformation reads and information writes from and to the failed harddrive to the replacement computer blade such that the user may not beaware of a failure. In one embodiment, the failure management softwaremay execute on a central management server, optionally with a backupserver in case of failure, although this approach may still presentcritical points of failure. In a preferred embodiment, the failuremanagement software may be distributed over the computer blades 401,403, and 405, such that the entire storage management system isdistributed, i.e., decentralized to eliminate single points of failure.Thus, in this embodiment, the computer blades 401, 403, and 405 may notneed a central server. In one embodiment, the systems and methodsdescribed herein may be used to augment an existing NAS and SANdistributed hard drive system.

In one embodiment, the VNAS system may implement an algorithm for a datafail-over system. The VNAS system may be operable to couple computerblades 401, 403, and 405 to the VNAS system, and to configure a resourcemanager. The computer blades 401, 403, and 405 may also be coupled to anenterprise network. The resource manager may be operable to manage theVNAS system, including information writing and striping protocols. Inone embodiment, the resource manager may be located on one of thecomputer blades 401, 403, and 405 coupled to the VNAS system. In anotherembodiment, a copy of the resource manager may operate on each of thecomputer blades. In yet another embodiment, the resource manager may bedistributed across the plurality of the computer blades, e.g., computerblades 401, 403, and 405. The information and other configurationinformation may be saved across computer blades 401, 403, and 405 in theVNAS system by the resource manager. Each computer blade 401, 403, and405 coupled to the VNAS system may be involved in storing theinformation for the other computer blades 401, 403, and 405. The VNASsystem may check if the computer blades 401, 403, and 405 in the VNASsystem are functioning properly, and if the VNAS system determines thatone of the computer blades 401, 403, or 405 has failed, may provide areplacement computer blade 501, as described above. The vitalinformation on the failed computer blade 401, 403, and 405 may have beendistributed across the computer blades 401, 403, and 405 in the VNASsystem prior to the fail-over condition. The VNAS system may thus accessthe computer blades 401, 403, and 405 in the VNAS system to retrieve thevital information for the replacement computer blade 501. In oneembodiment, by the use of resource managers, the computer blades 401,403, and 405 may schedule efficient information storage amongthemselves, e.g., over respective others of the computer blades 401,403, and 405.

FIG. 16—Memory Stack With a PC Region and a Server Region

Referring to FIG. 16, an embodiment of a memory stack for a computerblade partitioned into a PC region 1611 and a Server region 1613 isshown. As mentioned above, in one embodiment, each computer blade 1601may have some server functionality. The server functionality may includesome I/O functionality and the ability to negotiate file write and readrules, as mentioned above. The computer blade 1601 may negotiate writessimilar to a file server, and order and prioritize transactions. Thecomputer blade 1601 may also be coupled to an enterprise network 1609and a VSAN network 1607. Thus, in one embodiment, server functionalityfor the system may effectively be distributed over the plurality ofcomputer blades, thereby removing any single points of failureassociated with the user of a central server.

FIG. 17—Enterprise Switch and Storage Network Switch

Referring to FIG. 17, an embodiment of an enterprise network switch 1709and a storage network switch 1707 controlling attached PCs 1701, 1703,and 1705, which in a preferred embodiment, may be computer blades. As iswell known in the art, a Network Attached Storage (NAS) device may be agroup of hard disk drives that connect to a network, such as but notlimited to an Ethernet. The NAS device may function like a server toimplement file sharing. The NAS may allow more hard disk storage spaceto be added to the network without shutting down attached servers formaintenance and upgrades. As is also well known, a Storage Area Network(SAN) may be a network of shared storage devices. The SAN may make thestorage devices coupled to the SAN available to servers coupled to theSAN. As more storage devices are added to the SAN, the additionalstorage devices may be accessible from any server in the SAN.

The NAS or the SAN may consist of multiple hard disks in a box with asystem to serve the information out onto the network. The NAS or the SANmay use a central or limited distribution control and management node,e.g., a server, to keep track of file locations and to distribute filesfor storage.

In one embodiment of the invention, the computer blades 1701, 1703, 1705may function as the server to form a VNAS environment 1711. The computerblades 1701, 1703, and 1705 may negotiate file write rules, file reads,and order and prioritize transactions. Storage mediums on the computerblades 1701, 1703, and 1705 may function as a standard server attachedmemory.

In one embodiment, the computer blades 1701, 1703, and 1705 may have aninternal index of files in the form of a location file stored on othercomputer blades 1701, 1703, and 1705. The location file may indicatewhere information from various computer blades have been stored on othercomputer blades. The computer blades 1701, 1703, and 1705 may also storestriping and write rules. Each file stored in the VNAS 1711 may havedifferent striping rules that may be determined by the nature of thefile and the expectations of a system administrator. The VNAS 1711 mayuse a transponder Routing Information Protocol (RIP) to disseminatefiles on the computer blades 1701, 1703, and 1705. The RIP may be aprotocol defined by RFC 4038 that specifies how routers exchange routingtable information, although other protocols may also be within the scopeof the invention. Using the RIP, computer blades 1701, 1703, and 1705may periodically exchange entire routing tables. The RIP may broadcastthe name, index, and rules for a memory domain of the computer blades1701, 1703, and 1705, where, for example, the broadcasts may occur inresponse to a change in the index, or to a lapse of a specified timeperiod. To improve network performance, the files may be moved toreorganize the storage space or moved based on the frequency of use. Forexample, if the file is heavily used it may be moved to a “closer”computer blade in which there are fewer intervening switches, e.g.,Ethernet links, between the file and a user of the file. Finally, thecomputer blades 1701, 1703, and 1705 may be operable to query an indexfor a specific (instant) update.

In one embodiment, if a computer blade, e.g., computer blade 1701, isseeking a file, the computer blade 1701 may search the computer blade'sinternal index. The computer blade 1701 may also send a query to anothercomputer blade, e.g., computer blade 1703, that may be listed as aprimary source of the file in the internal index. The computer blade1701 may then access the file. If multiple computer blades attempt toaccess the file at the same time, the computer blade with the file maynegotiate a multiple transaction session. After the computer blade 1701accesses the file, the computer blade 1703 with the file may perform abackup according to read/write rules stored on the VNAS.

In one embodiment, the resource manager may function both as an analyzerand a controller when accessing the entire VNAS system 1711. As ananalyzer, the resource manager may utilize information about theperformance and use patterns of the entire VNAS system 1711. Based onthe performance and use patterns, the resource manager may computedemand and usage metrics or issues (e.g., processor time, memory usageand demand, hard drive memory, and network information) as well asgenerate reports on the applications and links used. These patterns maybe used to generate a map of the demands on the system's collectiveresources over time. The continually updated map may be used by thesystem administrator and/or the resource manager in order to performpredictive and proactive scheduling of resources to users. Other uses ofthe map may also be within the scope of the invention.

In one embodiment, in case of a first computer hard drive failure, theuser of the first computer may not notice any downtime. In other words,as noted above, the fail-over process may be transparent to the user.The hard drives on the second and third computers may be the storagemedium for the user through the VNAS so that a replacement processoronly has to access the already copied information from the user'scomputer. In addition, the failed hard drive on the user's computer maybe replaced with a new hard drive. In one embodiment, the new hard drivemay be brought into the computer system, i.e., the user's computer,independently and without intervention of the user.

In one embodiment, when the participating computers in a VNAS clusterare NAS servers, VNAS allows new storage capacity, in the form of a newNAS server to be added, or existing capacity to be removed, withoutaffecting the uptime of the VNAS volume. In this, VNAS running on NASservers provides SAN level capabilities in the area of zero downtimewhile adding or removing storage, without any hardware modifications toexisting NAS products.

In one embodiment, the computer blades may be additionally coupled to anexternal RAID system. The coupling to an external RAID system may givethe computer blades more redundancy and reliability. In addition, thecomputer blades may also be coupled to separate NAS and SAN storagenetworks. A distributed VNAS storage management system may minimize oreliminate points of failure in the networked distributed computersystem. At least a portion of the VNAS server software and the failuremanagement software may be distributed over the computers in thenetwork, reducing or removing central servers as a point of failure. Inone embodiment, the distributed computer system may include a pluralityof centrally located computers with respective human interfaces locatedremotely from the computers.

FIGS. 18-21—Move Manager Embodiments

In one embodiment, a move manager may provide the ability to undertakeindividual, workgroup, or department-level hardware moves. Move managermay be used when a fail-over condition is detected on a computer bladeto restore the computer blade to a replacement computer blade. Movemanager may also migrate an operating system, applications, andinformation from a user's old computer blade to a new computer bladewithout detecting a fail-over condition. In one embodiment, move managermay provide the ability to schedule moves to prevent network saturationduring peak work hours. A scriptable interface may allow anadministrator to control a move process and insert custom tasks oractivities they would like to execute prior to initiating the moveprocess, or upon the completion of a move. The move manager may alsoallow a system administrator to use a scriptable interface to add customtasks to a move process. In various embodiments, the move process mayinclude one or more of a one-to-one move, a cascading move, and a swapmove, as discussed below.

FIG. 18—A One-to-One Move

FIG. 18 illustrates a one-to-one move, according to two embodiments. Inone embodiment, a single user of an existing computer, e.g., an oldcomputer blade 1801, may be moved to new computer blade 1805. In anotherembodiment, a user of a legacy Whitebox PC 1803 may be moved or switchedto new computer blade 1807. For example, the user may be moved for ahardware upgrade or unreliable performance of existing hardware. Userpreferences (such as desktop settings and icons) may be combined withother information and transferred over a network to the new computerblades 1805 and 1807 as a series of backup files (e.g., collected inarchives or as “snapshots”). The backup files may be compressed packagesfor network transmission. In addition, a delta backup method, asdiscussed above, may be used.

Thus, in one embodiment, a first computer may be switched to the secondcomputer in a one to one move by copying at least a portion of theinformation from the first computer to the second computer and switchingthe first peripheral device over to the second computer using theperipheral switch.

FIG. 19—Cascading Move

In one embodiment, a cascade move may be performed. For example, if anew powerful computer is added to the network, multiple users may beupgraded to computers more powerful than their currently assignedmachines, e.g., based on computation needs, seniority, etc., where, forexample, user A gets moved to the new computer, user B gets moved touser A's old computer, user C gets moved to user B's old computer, andso on. Thus, in this approach, the information from the first computer(user B's old computer) may be copied to the second computer (user A'sold computer) while the information from the second computer (user A'sold computer) is copied onto a third computer (the new computer). Aperipheral switch may switch the first peripheral (i.e., user B's humaninterface) over to the second computer and may switch the secondperipheral (i.e., user A's human interface) over to the third computer.Other switches may also be within the scope of the invention. Forexample, in one embodiment, a single peripheral switch may provideswitching for all of the human interfaces. Alternatively, there may be aperipheral switch per computer or human interface. In yet anotherembodiment, the system may include a peripheral switch for each of anumber of subsets of the computers/human interfaces.

FIG. 19 illustrates an embodiment of a cascading move where pairs of oldcomputers are upgraded, possibly in parallel. In the embodiment shown,upon the arrival of a new set of computer blades 1905 and 1911, oldcomputer blades 1903 and 1909, may be moved to new computer blades 1905and 1911, respectively. Computers older than old computer blades 1903and 1909, such as computer blade 1901 and legacy Whitebox PC 1907, maybe moved onto the old computer blades 1903 and 1909, respectively. Othercomputers may also be within the scope of the invention.

Thus, for each upgrade path or series shown, a cascading move may bemanaged between a first computer, a second computer, and a thirdcomputer. In one embodiment, a copy of at least a portion of theinformation from the first computer may be copied onto the storagemedium of the second computer. Information from the second computer maybe copied onto a third computer. The peripheral switch may route signalsfrom the first peripheral device to the second computer and from thesecond peripheral device to the third computer. Of course, in otherembodiments, a cascading move may be performed for more than threecomputers.

FIG. 20—Swap Move

In one embodiment, a fail-over condition may include an indication of aneed to swap the first computer with the second computer, e.g., toimprove performance for a user, or to change environments (e.g., fromMicrosoft Windows to Apple MacOS). For example, if the second computeris a higher performing computer, and the user of the first computerneeds more computational power than the user of the second computer, thecomputers assigned to each user may be swapped. In other words, thefirst computer (or another computer) may copy the information from thefirst computer over to the second computer, and the second computer (oranother computer) may copy the information from the second computer ontothe first computer. Similarly, a peripheral switch may swap the humaninterfaces for the respective computers, e.g., by routing signals from afirst peripheral device (originally routed to the first computer) to thesecond computer, and from a second peripheral device (originally routedto the second computer) to the first computer.

FIG. 20 illustrates a swap move, according to one embodiment. Asmentioned above, a swap move may be used to equalize or adjust the useof resources in a network (e.g., to put more demanding users with fastercomputer blades). The computer blades may be switched by two users, suchas computer blades 2001 and 2003. Information, such as, but not limitedto, applications and settings from one computer blade 2001, may bepresent on another computer blade 2003, post move, and vice-versa.

In one embodiment, information from one of the computer blades 2005 and2007 performing a switch, may be stored in a temporary third location topreserve the target computer blade 2007 while the switching computerblade 2005 overwrites the target computer blade's information. Forexample, an intermediate image server 2009 (based on PXE technology) maybe used. Large-scale moves may also be within the scope of theinvention. In moving multiple computer blades, moves may be scheduledfor Operating System settings, profiles, applications, and userinformation from old computer blades to new computer blades.

In one embodiment of a swap move, at least a portion of the informationfrom the storage medium of the first computer may be stored onto thestorage medium of second computer, and at least a portion of theinformation from the storage medium of the second computer may be storedonto the storage medium of said first computer. The peripheral switchmay switch the signal routing from the first peripheral device to thefirst computer to route to the second computer and the signal routingfrom the second peripheral device to the second computer to route to thefirst computer.

FIG. 21—Flowchart of a Move Process

FIG. 21 flowcharts an initiation and process of a single computer move,according to one embodiment. It should be noted that in variousembodiments of the method described below, one or more of the stepsdescribed may be performed concurrently, in a different order thanshown, or may be omitted entirely. Other additional steps may also beperformed as desired.

As FIG. 21 shows, in 2101, a move may be initiated, e.g., by a systemadministrator, or programmatically, i.e., automatically. For example,the move may be initiated as a result of one or more operation rules, orthe system administrator may initiate the move from a move manager webconsole or other user interface.

In 2103, source and target computer blades may be tagged. In otherwords, one or more source/target pairs may be specified whereinformation from each source computer is to be moved to the respectivetarget computer, and/or one or more respective peripheral devices are tobe switched from each source computer to the respective target computer.

In 2105, a move may be scheduled. Depending on the number of machinesbeing moved, a schedule may be set to activate an image/backup processand move process at night to avoid any network saturation or otherinconveniences during the work day.

Finally, in 2107, the scheduled move may be performed. In other words,at least a portion of the information from the source computer may bemoved to the target computer, and any peripheral devices comprised inthe human interface for the source computer may be switched to thetarget computer.

It is noted that any of the various moves described above (e.g., singlecomputer switch, computer swap, and cascading move) may follow a similarprocess.

Various embodiments may further include receiving or storinginstructions and/or information implemented in accordance with theforegoing description upon a carrier medium. Suitable carrier media mayinclude storage media or memory media such as magnetic or optical media,e.g., disk or CD-ROM, as well as transmission media or signals such aselectrical, electromagnetic, or digital signals, conveyed via acommunication medium such as a network and/or a wireless link

Further modifications and alternative embodiments of various aspects ofthe invention may be apparent to those skilled in the art in view ofthis description. Accordingly, this description is to be construed asillustrative only and is for the purpose of teaching those skilled inthe art the general manner of carrying out the invention. It is to beunderstood that the forms of the invention shown and described hereinare to be taken as the presently preferred embodiments. Elements andmaterials may be substituted for those illustrated and described herein,parts and processes may be reversed, and certain features of theinvention may be utilized independently, all as would be apparent to oneskilled in the art after having the benefit of this description of theinvention. Changes may be made in the elements described herein withoutdeparting from the spirit and scope of the invention as described in thefollowing claims.

1. A computer-based method, comprising: storing a copy of at least aportion of information stored on a storage medium of a first computeronto a storage medium of a second computer, wherein the first computeris coupled to at least one human interface device through a switch, andwherein the switch is configured to route signals between the at leastone human interface device and the first computer; monitoring the firstcomputer for a fail-over condition; detecting the fail-over conditionfor the first computer; and in response to said detection, configuringthe switch to switch the signal routing from the first computer to thesecond computer, thereby routing signals between the at least one humaninterface device and the second computer.
 2. The method of claim 1,wherein said storing the copy of at least a portion of the informationonto the storage medium of the second computer is performed prior tosaid detection.
 3. The method of claim 1, wherein, storing the copyfurther comprises implementing a delta-based back-up scheme to store theat least a portion of the information from the storage medium of thefirst computer onto the storage medium of the second computer.
 4. Themethod of claim 1, wherein, storing the copy with a delta-based back-upscheme further comprises: noting each of one or more incremental backupsfor the first computer in a catalog; and sending the catalog to at leastone other computer, wherein the at least one other computer compares thecatalog to the incremental backups stored on the second computer, andwherein if the at least one other computer determines that at least oneincremental backup is missing from the storage medium of the secondcomputer, the second computer receives and stores the at least onemissing incremental backup from the first computer.
 5. The method ofclaim 1, further comprising: providing a graphical user interface fortwo or more of a login screen, a list of local computers, aconfiguration screen, a scheduling interface, an information recoveryscreen, an archive view screen, and an information recovery screen. 6.The method of claim 1, wherein the at least one computer of theplurality of computers comprises one or more of the first computer andthe second computer.
 7. The method of claim 1, wherein the at least onecomputer of the plurality of computers comprises one or more of thefirst computer, the second computer, and a third computer of theplurality of computers.
 8. The method of claim 1, wherein at least asubset of said storing, said monitoring, said detecting, and saidconfiguring are performed without human input.
 9. The method of claim 1,wherein said storing the copy of at least a portion of the informationonto the storage medium of the second computer is performed after saiddetection.
 10. The method of claim 1, wherein, configuring the switch toswitch the signal routing in response to said detection comprises:indicating said detection to a human; receiving input from the humanspecifying said configuring; and configuring the switch in response tothe received input.
 11. The method of claim 1, wherein the storagemedium of at least one of the plurality of computers stores programinstructions implementing a virtual storage area network.
 12. The methodof claim 1, wherein the storage medium of at least one of the pluralityof computers stores program instructions implementing managementsoftware to manage one or more of processor usage, physical memoryusage, hard drive usage, and network information usage for the pluralityof computers.
 13. The method of claim 1, wherein the storage medium ofat least one of the plurality of computers stores program instructionsexecutable to create and maintain a location file, wherein the locationfile indicates one or more locations of the information.
 14. The methodof claim 1, wherein the plurality of computers comprise blade computers.15. The method of claim 1, wherein the at least one human interfacedevice is comprised in a human interface, and wherein said routingsignals between the at least one human interface device and the firstcomputer of the plurality of computers comprises the switch associatingthe human interface with the first computer, and wherein, after theswitch switches the signal routing from the first computer to the secondcomputer the human interface is associated with the second computer. 16.The method of claim 1, wherein the first computer and the secondcomputer are coupled to a storage network, wherein the storage networkcomprises a storage area network server, the method further comprising:the storage network server making the storage medium of the firstcomputer accessible by the processor of the second computer, and makingthe storage medium of the second computer accessible by the processor ofthe first computer.
 17. The method of claim 16, wherein the firstcomputer and the second computer are coupled to a storage medium, themethod further comprising: the storage network server making the storagemedium accessible by the first processor and the second processor. 18.The method of claim 1, wherein said storing, said monitoring, saiddetecting, and said configuring are performed without operation of acentral server.
 19. The method of claim 1, further comprising: detectingan identity of the first computer and/or the second computer in theplurality of computers; wherein the identity is used by the at least onecomputer to assign the second computer to the first computer, such thatthe at least a portion of information from the storage medium of thefirst computer is stored onto the storage medium of the second computer.20. The system of claim 1, wherein the fail-over condition indicates oneor more of: a need to switch the first computer with the secondcomputer; or a need to upgrade to a higher performance computer; whereinthe second computer is a higher performing computer than the firstcomputer.
 21. The method of claim 1, wherein the switch is furthercoupled to a second at least one human interface device, wherein theswitch is further configured to route signals between the second atleast one human interface device and the second computer; whereinstoring a copy of at least a portion of the information onto the storagemedium of a second computer further includes: storing at least a portionof the information from the storage medium of the second computer ontothe storage medium of the first computer; and wherein configuring theswitch to switch the signal routing from the first computer to thesecond computer further includes configuring the switch to switch thesignal routing from the second computer to the first computer, therebyrouting signals between the second human interface device and the firstcomputer.
 22. The method of claim 1, wherein the switch is furthercoupled to a second at least one human interface device, wherein theswitch is further configured to route signals between the second atleast one human interface device and the second computer; whereinstoring a copy of at least a portion of the information onto the storagemedium of a second computer of the plurality of computers comprises:storing at least a portion of the information from the storage medium ofthe second computer onto the storage medium of a third computer; andwherein configuring the switch to switch the signal routing from thefirst computer to the second computer further includes configuring theswitch to switch the signal routing from the second computer to thethird computer, thereby routing signals between the second humaninterface device and the third computer.
 23. A data fail-over system fora plurality of computer systems, the system comprising: a plurality ofcomputers, wherein each computer comprises: a processor; and a storagemedium coupled to the processor; at least one human interface device;and a switch coupled to at least two of the plurality of computers, andfurther coupled to the at least one human interface device, wherein theswitch is configured to route signals between the at least one humaninterface device and a first computer of the plurality of computers;wherein the storage medium of the first computer stores information;wherein the storage medium of at least one computer of the plurality ofcomputers stores program instructions which are executable by theprocessor of said at least one computer to: store a copy of at least aportion of the information onto the storage medium of a second computerof the plurality of computers; and wherein the program instructions arefurther executable to: monitor the first computer for a fail-overcondition; detect the fail-over condition for the first computer; and inresponse to said detection, configure the switch to switch said signalrouting from the first computer to the second computer, thereby routingsignals between the at least one human interface device and the secondcomputer.
 24. A computer-based system, comprising: means for storing acopy of at least a portion of information stored on a storage medium ofa first computer onto a storage medium of a second computer, wherein thefirst computer is coupled to at least one human interface device througha switch, and wherein the switch routes signals between the at least onehuman interface device and the first computer; means for monitoring thefirst computer for a fail-over condition; means for detecting thefail-over condition for the first computer; and means for configuringthe switch to switch the signal routing from the first computer to thesecond computer in response to said detection, thereby routing signalsbetween the at least one human interface device and the second computer.25. A computer-accessible memory medium comprising program instructions,wherein the program instructions are computer executable to perform:storing a copy of at least a portion of information stored on a storagemedium of a first computer onto a storage medium of a second computer,wherein the first computer is coupled to at least one human interfacedevice through a switch, and wherein the switch routes signals betweenthe at least one human interface device and the first computer;monitoring the first computer for a fail-over condition; detecting thefail-over condition for the first computer; and in response to saiddetection, configuring the switch to switch the signal routing from thefirst computer to the second computer, thereby routing signals betweenthe at least one human interface device and the second computer.